package 华为OD机试真题2023.进阶题;

import utils.MyUtil;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class HJ29_组合出合法最小数 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner in = new Scanner(new File("src/main/java/华为OD机试真题2023/进阶题/input/29.txt"));
        MyUtil.START();
        Solution(in);
        MyUtil.END();
    }

    // 这题不能用全排列，时间复杂度 O(n!) 太大了。
    static void Solution(Scanner in) {
        String[] sArray = in.nextLine().split(" ");
        Arrays.sort(
                sArray,
                (a, b) -> {
                    return (a + b).compareTo(b + a);
                    //                    return a.compareTo(b);
                });
        if (sArray[0].charAt(0) == '0') {
            for (int i = 1; i < sArray.length; i++) {
                if (sArray[i].charAt(0) != '0') {
                    int k = i;
                    String now = sArray[i];

                    // 注意：按理说这一步要加，但加了这一步答案就是错误的。
                    //                    if (i < sArray.length - 1) {
                    //                        String next = sArray[i + 1];
                    //                        if (now.compareTo(next) > 0) {
                    //                            now = next;
                    //                            k = i + 1;
                    //                        }
                    //                    }

                    sArray[0] = now + sArray[0];
                    sArray[k] = "";
                    break;
                }
            }
        }

        StringBuilder result = new StringBuilder();
        for (String str : sArray) {
            result.append(str);
        }
        String res = result.toString().replaceAll("^0+", ""); // 开头的0都要去掉
        if (res.equals("")) {
            System.out.println(0);
        } else {
            System.out.println(res);
        }
    }
}
